home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / PC / MISCBAS / MAZE.ASC < prev    next >
Text File  |  1987-01-11  |  5KB  |  198 lines

  1. 100 REM  WRITTEN BY JACK HAUBER UPDATED 5-21-77  D. NIXON
  2. 110 WIDTH 80
  3. 120 DEFINT A-Z  
  4. 130 PRINT "THIS PROGRAM WILL PRINT OUT A DIFFERENT MAZE EVERY TIME IT"  
  5. 140 PRINT "IS RUN AND GUARANTEES ONLY ONE PATH THROUGH.  YOU CAN CHOOSE"
  6. 150 PRINT "THE DIMENSIONS OF THE MAZE. I.E. THE NUMBER OF SQUARES WIDE" 
  7. 160 PRINT "AND THE NUMBER OF SQUARES LONG." 
  8. 170 PRINT   
  9. 180 PRINT "WHAT ARE YOUR WIDTH AND LENGTH"; 
  10. 190 INPUT H,V   
  11. 200 DIM W(H,V),V(H,V)   
  12. 210 PRINT   
  13. 220 IF H>2 AND V>2 THEN 260 
  14. 230 PRINT "MEANINGLESS DIMENSIONS, TRY AGAIN."  
  15. 240 PRINT   
  16. 250 GOTO 1950  
  17. 260 IF H< 27 GOTO 290   
  18. 270 PRINT " THE WIDTH IS WIDER THEN 80 COLUMNS" 
  19. 280 GOTO 1950  
  20. 290 PRINT   
  21. 300 PRINT   
  22. 310 LET Q = 0   
  23. 320 LET Z = 0   
  24. 330 LET X = INT(RND(1)*H+1) 
  25. 340 FOR I = 1 TO H  
  26. 350  IF I = X THEN 380  
  27. 360  PRINT ":--";   
  28. 370  GOTO 390   
  29. 380  PRINT ":  ";   
  30. 390 NEXT I  
  31. 400 PRINT ":"   
  32. 410 LET C = 1   
  33. 420 LET W(X,1) = C  
  34. 430 LET C = C+1 
  35. 440 LET R = X   
  36. 450 LET S = 1   
  37. 460 GOTO 570
  38. 470 IF R <> H THEN 550  
  39. 480 IF S <> V THEN 520  
  40. 490 LET R = 1   
  41. 500 LET S = 1   
  42. 510 GOTO 560
  43. 520 LET R = 1   
  44. 530 LET S = S+1 
  45. 540 GOTO 560
  46. 550 LET R = R+1 
  47. 560 IF W(R,S) = 0 THEN 470  
  48. 570 IF R-1 = 0 THEN 930
  49. 580 IF W(R-1,S) <> 0 THEN 930  
  50. 590 IF S-1 = 0 THEN 740
  51. 600 IF W(R,S-1) <> 0 THEN 740  
  52. 610 IF R = H THEN 650   
  53. 620 IF W(R+1,S) <> 0 THEN 650   
  54. 630 LET X = INT(RND(1)*3+1) 
  55. 640 ON X GOTO 1320,1390,1460
  56. 650 IF S <> V THEN 690 
  57. 660 IF Z = 1 THEN 720 
  58. 670 LET Q = 1  
  59. 680 GOTO 700  
  60. 690 IF W(R,S+1) <> 0 THEN 720 
  61. 700 LET X = INT(RND(1)*3+1)
  62. 710 ON X GOTO 1320,1390,1560   
  63. 720 LET X = INT(RND(1)*2+1)
  64. 730 ON X GOTO 1320,1390
  65. 740 IF R = H THEN 850 
  66. 750 IF W(R+1,S) <> 0 THEN 850 
  67. 760 IF S<> V THEN 800 
  68. 770 IF Z = 1 THEN 830 
  69. 780 LET Q = 1  
  70. 790 GOTO 810  
  71. 800 IF W(R,S+1) <> 0 THEN 830 
  72. 810 LET X = INT(RND(1)*3+1)
  73. 820 ON X GOTO 1320,1460,1560   
  74. 830 LET X = INT(RND(1)*2+1)
  75. 840 ON X GOTO 1320,1460
  76. 850 IF S <> V THEN 890
  77. 860 IF Z = 1 THEN 920 
  78. 870 LET Q = 1  
  79. 880 GOTO 900  
  80. 890 IF W(R,S+1) <> 0 THEN 920 
  81. 900 LET X = INT(RND(1)*2+1)
  82. 910 ON X GOTO 1320,1560
  83. 920 GOTO 1320  
  84. 930 IF S-1 = 0 THEN 1140   
  85. 940 IF W(R,S-1) <> 0 THEN 1140 
  86. 950 IF R=H THEN 1060   
  87. 960 IF W(R+1,S) <> 0 THEN 1060 
  88. 970 IF S<> V THEN 1010 
  89. 980 IF Z = 1 THEN 1040 
  90. 990 LET Q = 1  
  91. 1000 GOTO 1020  
  92. 1010 IF W(R,S+1) <> 0 THEN 1040 
  93. 1020 LET X = INT(RND(1)*3+1)
  94. 1030 ON X GOTO 1390,1460,1560   
  95. 1040 LET X = INT(RND(1)*2+1)
  96. 1050 ON X GOTO 1390,1460
  97. 1060 IF S <> V THEN 1100
  98. 1070 IF Z = 1 THEN 1130 
  99. 1080 LET Q = 1  
  100. 1090 GOTO 1110  
  101. 1100 IF W(R,S+1) <> 0 THEN 1130 
  102. 1110 LET X = INT(RND(1)*2+1)
  103. 1120 ON X GOTO 1390,1560
  104. 1130 GOTO 1390  
  105. 1140 IF R = H THEN 1240 
  106. 1150 IF W(R+1,S) <> 0 THEN 1240 
  107. 1160 IF S <> V THEN 1200
  108. 1170 IF Z = 1 THEN 1230 
  109. 1180 LET Q = 1  
  110. 1190 GOTO 1210  
  111. 1200 IF W(R,S+1) <> 0 THEN 1230 
  112. 1210 LET X = INT(RND(1)*2+1)
  113. 1220 ON X GOTO 1460,1560
  114. 1230 GOTO 1460  
  115. 1240 IF S <> V THEN 1280
  116. 1250 IF Z = 1 THEN 1310 
  117. 1260 LET Q = 1  
  118. 1270 GOTO 1290  
  119. 1280 IF W(R,S+1) <> 0 THEN 1310 
  120. 1290 GOTO 1560  
  121. 1300 REM                         BLOCKED
  122. 1310 GOTO 1760  
  123. 1320 LET W(R-1,S) = C   
  124. 1330 LET C = C+1
  125. 1340 LET V(R-1,S) = 2   
  126. 1350 LET R = R-1
  127. 1360 IF C = H*V+1 THEN 1770 
  128. 1370 LET Q = 0  
  129. 1380 GOTO 570   
  130. 1390 LET W(R,S-1) = C   
  131. 1400 LET C = C+1
  132. 1410 LET V(R,S-1) = 1   
  133. 1420 LET S = S-1
  134. 1430 IF C = H*V+1 THEN 1770 
  135. 1440 LET Q = 0  
  136. 1450 GOTO 570   
  137. 1460 LET W(R+1,S) = C   
  138. 1470 LET C = C+1
  139. 1480 IF V(R,S) = 0 THEN 1510
  140. 1490 LET V(R,S) = 3 
  141. 1500 GOTO 1520  
  142. 1510 LET V(R,S) = 2 
  143. 1520 LET R = R+1
  144. 1530 IF C = H*V+1 THEN 1770 
  145. 1540 LET Q = 0  
  146. 1550 GOTO 930  
  147. 1560 IF Q = 1 THEN 1660 
  148. 1570 LET W (R,S+1) = C  
  149. 1580 LET C = C+1
  150. 1590 IF V(R,S) = 0 THEN 1620
  151. 1600 LET V(R,S) = 3 
  152. 1610 GOTO 1630  
  153. 1620 LET V(R,S) = 1 
  154. 1630 LET S = S+1
  155. 1640 IF C = H*V+1 THEN 1770 
  156. 1650 GOTO 570   
  157. 1660 LET Z = 1  
  158. 1670 IF V(R,S) = 0 THEN 1710
  159. 1680 LET V(R,S) = 3 
  160. 1690 LET Q = 0  
  161. 1700 GOTO 1760  
  162. 1710 LET V(R,S) = 1 
  163. 1720 LET Q = 0  
  164. 1730 LET R = 1  
  165. 1740 LET S = 1  
  166. 1750 GOTO 560   
  167. 1760 GOTO 470   
  168. 1770 FOR J = 1 TO V 
  169. 1780  PRINT "I";
  170. 1790  FOR I = 1 TO H
  171. 1800  IF V(I,J) < 2 THEN 1830   
  172. 1810   PRINT "   "; 
  173. 1820   GOTO 1840
  174. 1830   PRINT "  I"; 
  175. 1840  NEXT I
  176. 1850  PRINT 
  177. 1860  FOR I = 1 TO H
  178. 1870   IF V(I,J) = 0 THEN 1910  
  179. 1880   IF V(I,J) = 2 THEN 1910  
  180. 1890   PRINT ":  "; 
  181. 1900   GOTO 1920
  182. 1910   PRINT ":--"; 
  183. 1920  NEXT I
  184. 1930 PRINT ":"  
  185. 1940 NEXT J 
  186. 1950 ERASE W,V  
  187. 1960 FOR I=1 TO 5: PRINT: NEXT I
  188. 1970 GOTO 180   
  189. 1980 END
  190. 
  191. 1920  NEXT I
  192. 1930 PRINT ":"  
  193. 1940 NEXT J 
  194. 1950 ERASE W,V  
  195. 1960 FOR I=1 TO 5: PRINT: NEXT I
  196. 1970 GOTO 180   
  197. 1980 END
  198.